co-use.js
co using your choice of promise implementation
Current status
What's it for?
co is a brilliant module which allows you to code async code in a sync style using generators and yield
.
Functions which use co
return a promise.
The problem is that the promise implementation used within co
is the native Javascript Promise and co doesn't make it possible to use an alternative implementation, for example bluebird.
This module adds an extra method .use()
which allows the use of any promise implementation you like within co
.
Usage
co.use(Promise)
Creates a new instance of co
, which uses the Promise implementation provided.
var Bluebird = require('bluebird');
var co = require('co-use').use(Bluebird);
var p = co(function* () {});
console.log(p instanceof Bluebird);
Other methods
All other methods are the same as normal co.
Building co-use
I requested that this functionality be included in co
(PR) but so far it has not.
So this module is made by loading co
and wrapping the code to add the .use()
method. I will endeavour to update this module when new versions of co are released. The version of co
currently used is v4.6.0
.
If you wish to build co-use
with the most recent version of co
, do the following:
- Fork
co-use
from Github - Go to the directory of the fork
- Run the following code:
npm install
npm run build
Please feel free to raise a PR with the updated build.
Tests
Use npm test
to run the tests. Use npm run cover
to check coverage.
Changelog
See changelog.md
Issues
If you discover a bug, please raise an issue on Github. https://github.com/overlookmotel/co-use/issues
Contribution
Pull requests are very welcome. Please:
- ensure all tests pass before submitting PR
- add an entry to changelog
- add tests for new features
- document new functionality/API additions in README